package com.pancm.datacollector.collector;

import java.util.HashMap;

/**
 * 采集模块接口定义
 * 所有具体的协议采集实现(HTTP、TCP、UDP、MQTT、WebSocket等)都需要实现此接口
 */
public interface Collector {
    /**
     * 启动采集器
     * @throws Exception 启动过程中的异常
     */
    void start() throws Exception;

    /**
     * 停止采集器
     * @throws Exception 停止过程中的异常
     */
    void stop() throws Exception;

    /**
     * 重启采集器
     * @throws Exception 重启过程中的异常
     */
    void restart() throws Exception;

    /**
     * 执行一次数据采集
     * @return 采集到的数据，使用HashMap存储
     * @throws Exception 采集过程中的异常
     */
    HashMap<String, Object> collect() throws Exception;

    /**
     * 执行一次数据采集并将结果放入队列
     * 此方法不返回采集结果，采集的数据会直接进入处理队列
     * @throws Exception 采集过程中的异常
     */
    void collectToQueue() throws Exception;

    /**
     * 获取采集器当前状态
     * @return 采集器状态
     */
    CollectorStatus getStatus();

    /**
     * 获取采集器配置信息
     * @return 采集器配置
     */
    CollectorConfig getConfig();

    /**
     * 更新采集器配置
     * @param config 新的配置信息
     * @throws Exception 配置更新过程中的异常
     */
    void updateConfig(CollectorConfig config) throws Exception;
} 